// Class definition for Force

class Force {
	
	// Overload << to view what Force contains easily
	friend ostream& operator<<(ostream& os, const Force& f) {
		os << "Initial AR: " << f.iAeroRating << endl;
		os << "Aerospace Rating: " << f.aeroRating << endl;
		os << "Initial GR: " << f.iGroundRating << endl;
		os << "Ground Rating: " << f.groundRating << endl;
		os << "Leader Rating: " << f.leaderRating << endl;
		os << "Exp: " << f.exp << endl;
		os << "Rating: " << f.rating << endl;
		os << "Supply Need: " << f.supplyNeed << endl;
		os << "Supply Points: " << f.supplyPts << endl;
		os << "Number of turns without Supply: " <<f.numTurnsWOSupply << endl;
		os << "Fatigue Points: " << f.fatiguePts << endl;
		os << "Combat Mod: " << f.combatMod << endl << endl;

		return os;
	}

private:
	// Data Members
	int iAeroRating, iGroundRating;
	int aeroRating, groundRating, leaderRating;
	float exp;
	int rating;
	int supplyNeed, numTurnsWOSupply;
	float supplyPts, fatiguePts;
	int combatMod;

public:
	// Constructor
	Force(int=0, int=0, int=0, int=0, float=1, float=0, int=0, float=0, int=0);

	// Accessors
	int getiAeroRating();
	int getiGroundRating();
	int getAeroRating(); 
	int getGroundRating();
	int getLeaderRating(); 
	float getExp();
	int getRating();
	int getSupplyNeed();
	float getSupplyPts(); 
	int getNumTurnsWOSupply();
	float getFatiguePts(); 
	int getCombatMod();

	// Mutators
	void setiAeroRating(int ar);
	void setiGroundRating(int gr);
	void setAeroRating(int ar);
	void setGroundRating(int gr);
	void setLeaderRating();
	void setExp(float xp);
	void setRating();
	void setSupplyNeed(); 
	void setSupplyPts(float sp);
	void setNumTurnsWOSupply(int turns);
	void setFatiguePts(float fp); 
	void setCombatMod(int cm);
	
	// Functions
	bool checkSurrenderLimit();

};